/*
 * file.h
 *
 *  Created on: 2017年3月17日
 *      Author: zhikang.peng
 */

#ifndef OS_FILE_H_
#define OS_FILE_H_ 1

#define ADR_DISKIMG 0x00100000 // 磁盘地址
/**
 * 根目录区条目结构
 * name			文件名
 * ext			扩展名
 * type			文件类型
 * reserve		保留
 * time			时间
 * date			日期
 * clustno		簇号	(作者说簇号可以理解为扇区号, 那是因为我们在ip10中的最头部设置了每簇中只有1个扇区)
 * size			文件大小
 */
struct FILEINFO {
	unsigned char name[8], ext[3], type;
	char reserve[10];
	unsigned short time, date, clustno;
	unsigned int size;
};

/**
 * 读取文件
 * buf 文件内容
 * size 文件大小
 * pos 偏移量
 */
struct FILEHANDLE {
	char *buf;
	int size;
	int pos;
};

void file_readfat(int *fat, unsigned char *img);
void file_load(int clustno, int size, char *buf, int *fat, char *img);
struct FILEINFO *file_search(char *name, struct FILEINFO *finfo, int max);

#endif /* OS_FILE_H_ */
